home *** CD-ROM | disk | FTP | other *** search
- Article 1981 of comp.infosystems.gopher:
- Xref: feenix.metronet.com comp.infosystems.gopher:1981
- Newsgroups: comp.infosystems.gopher
- Path: feenix.metronet.com!news.ecn.bgu.edu!mp.cs.niu.edu!linac!pacific.mps.ohio-state.edu!zaphod.mps.ohio-state.edu!cs.utexas.edu!uunet!utcsri!newsflash.concordia.ca!mizar.cc.umanitoba.ca!silver.cs.umanitoba.ca!sbalneav
- From: sbalneav@silver.cs.umanitoba.ca (Scott Balneaves)
- Subject: Fingering under gopher - gophinger
- Message-ID: <sbalneav.734818086@silver.cs.umanitoba.ca>
- Summary: a free program to do fingering in gopher
- Keywords: gophinger finger gopher
- Sender: news@ccu.umanitoba.ca
- Nntp-Posting-Host: silver.cs.umanitoba.ca
- Organization: University of Manitoba, Winnipeg, Canada
- Date: Wed, 14 Apr 1993 20:08:06 GMT
- Lines: 149
-
- A couple of weeks ago I saw someone who wanted to be able to do a "finger"
- under a gopher server. To this person (whose name escapes me) and to
- anyone else that ever wanted to finger people via a gopher, this bud's
- for you...
-
- I hacked this together in about 2 or 3 hours, so I cannot guarentee
- that it's bulletproof. But, it does seem to work. If you use it, send
- me some mail -- I'd love to see it in action! :-)
-
- It requires that you have perl, which you can get from many places. Instructions
- for use are at the top of the program. Go nuts.
-
- Scott
-
- ------------CUT HERE--------------------
- #!/usr/local/bin/perl
- #############################################################################
- # Copyright Notice
- #############################################################################
- # gophinger.perl - Scott L. Balneaves
- #
- # "I see I've foiled your plans for world dominiation again,
- # Mr. Goldfinger"
- #
- # Copy it, mangle it, use it, do whatever. Just leave my name at the top.
- #
- # If it don't do something you want it to do, just gimme an e-mail at
- # sbalneav@silver.cs.umanitoba.ca
- # and I'll see what I can do for 'ya.
- #############################################################################
- #
- # This program uses inetd to get started, so.. you'll need a line in
- # your inetd.conf something like the following:
- #
- # gophinger stream tcp nowait tcp /usr/local/bin/gophinger.perl gophinger
- #
- # and a line in your /etc/services file something like:
- #
- # gophinger 71/tcp
- #
- # in your .Links file, try something to the effect of:
- #
- # Type=1
- # Name=Gophinger finger service
- # Host=yourhost.what.ever.that.is
- # Port=71
- # Path=+
- #
- # I've structured it so that you can get the list of names in whatever
- # way you want. Gophinger expects to use an /etc/passwd like file.
- # You can either use /etc/passwd, or use a modified version of the file.
- # for instance, you can create a file like:
- #
- # sbalneav@silver.cs.umanitoba.ca::::Scott L. Balneaves::
- # sbalneav@ccu.Umanitoba.ca::::Scott L. Balneaves::
- #
- # as a test, and have gophinger go after that. That way you can finger
- # people on different hosts (internet coke machines, etc :-)
- #
- # You can also use YP (or NIS if you like) to get the info, pass it
- # through a filter that removes certain names, etc. Whatever you like,
- # so long as the output looks like a passwd entry, you'll be fine.
- #
- # At any rate, $command is the command to use to get the passwd-like file
- # into gophinger. I've included a couple, commented out, and one which
- # is guarenteed to work :-) (note the trailing pipe symbol at the end of
- # the command string)
- #
- # This program was a quick hack, so don't expect perfection.
- #
- #############################################################################
- #$command = "cat /usr/local/etc/gophinger.passwd |";
- #$command = "ypcat passwd | sort |";
- $command = "cat /etc/passwd | sort |";
-
- $defaultport=71; # our default port is 71
-
- #
- # Get the port number from the services file
- #
- ($name, $aliases, $port) = getservbyname('g2fd','tcp');
- $port=$defaultport unless $port;
-
- #
- # Get our full host name
- #
- chop($host = `hostname`);
- ($host, $aliases, $type, $len, $thisaddr) = gethostbyname($host);
-
- #
- # Receive our request and hack off the naughty bits :-)
- #
-
- $line=<STDIN>;
- chop $line; # ouch
- chop $line; # ouch
- $line="1" unless $line;
-
- #
- # did we get a request for a listing(1)? or a request to finger (0)?
- #
-
- ($type,$name)= split('/',$line);
-
- if (! $name) {
- $type="1";
- }
-
- #
- # OK, we got a request to list. Open our pipe, and start squakin'
- #
- if ($type eq '1') {
- open(PASSWD, $command) || die;
-
- while (<PASSWD>) {
- chop;
- ($login,$passwd,$uid,$gid,$gcos,$home,$home,$shell) = split(/:/);
-
- $putout="0$login [$gcos]\t0/$login\t$host\t$port\r\n";
- print($putout);
- }
- close (PASSWD);
-
- $putout=".\r\n";
- print($putout);
-
- } else {
-
- #
- # We got a request to finger. Pipe that and spray the output
- #
- open(FINGER, "finger $name |") || die;
-
- while (<FINGER>) {
- chop;
- print "$_\r\n";
- }
-
- close (FINGER);
- $putout=".\r\n";
- print($putout);
- }
- ------------CUT HERE--------------------
-
- --
- Scott L. Balneaves | sbalneav@silver.cs.umanitoba.ca
- "No tears to cry, no feelings left... | Weird answers $1.00
- This species has amused itself to death." | Correct, weird answers $1.50
- - Roger Waters | Crackpot theories FREE
-
-
-